Estoy en el proceso de actualizar un sitio de CakePHP 3.10.0 a CakePHP 4.x usando la Guía de actualización 4.x. He tenido éxito hasta el punto en que necesita ejecutar los siguientes comandos:
bin/cake upgrade rector --rules phpunit80 <path/to/app/tests> bin/cake upgrade rector --rules cakephp40 <path/to/app/src> Omití el primer comando porque no realizo pruebas unitarias ( ¡todavía! ). Cuando ejecuto el segundo comando, simplemente se cuelga. No hay salida en absoluto de este comando. Lo he dejado reposar durante horas pero no hace nada. -v al comando y finalmente obtuve algo de salida, pero aún se cuelga:
$ bin/cake upgrade rector --rules cakephp40 ../vintage-lib/src -v Detecting autoload file for /mnt/d/Programming/PHP/vintage-lib/src -> Checking /mnt/d/Programming/PHP/vintage-lib/src/vendor/autoload.php -> Checking /mnt/d/Programming/PHP/vintage-lib/vendor/autoload.php -> Found /mnt/d/Programming/PHP/vintage-lib/vendor/autoload.php Running /mnt/d/Programming/PHP/upgrade/vendor/bin/rector process --autoload-file='/mnt/d/Programming/PHP/vintage-lib/vendor/autoload.php' --config='/mnt/d/Programming/PHP/upgrade/config/rector/cakephp40.php' --working-dir='/mnt/d/Programming/PHP/vintage-lib/src' '/mnt/d/Programming/PHP/vintage-lib/src'Intenté ejecutar esto en Windows, WSL e incluso en una máquina virtual Linux; el resultado sigue siendo el mismo, lo que me hace creer que es algo con mi código o un archivo de configuración. Intenté ejecutar el comando en cada uno de mis complementos pero obtengo el mismo resultado.
También ejecuté y solucioné todos los errores y advertencias de Codeniffer, pero no hace ninguna diferencia.
Estoy perdido porque no sé dónde verificar a continuación. Cualquier ayuda sería muy apreciada.
Realicé una actualización de 3.4 a 4.0 siguiendo la guía de migración a una T, pasando por cada actualización menor y todavía tenía el mismo problema con rector colgando.
La solución fue que hay un PagesController listo para usar que se cambió en algún momento entre 3.4 y 3.10. Tuve que reemplazarlo con la versión de la aplicación de esqueleto ( https://github.com/cakephp/app/blob/3.x/src/Controller/PagesController.php ) para que rector pasara.
Si ese no es su problema, intente ejecutar rector un directorio a la vez para identificar el archivo problemático. Puede encontrar la lista de directorios como: $ find /path/to/app/src/ -type d